package org.lanqiao.tjut.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.lanqiao.tjut.myUtils.MyUtils;

public class EncodingCharsetFilter implements Filter {
	// 初始化参数对象
	FilterConfig myConf;

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {

		// 转发过滤处理的业务
		// 方法的参数 是servlet参数，没有支持http协议（强制转换）

		// 1、过滤器主要的业务逻辑
		// 设置所有的请求对象 request、response的编码格式
		request.setCharacterEncoding(myConf.getInitParameter("charSet"));
		response.setCharacterEncoding(myConf.getInitParameter("charSet"));
		MyUtils.logger_rootLogger.debug("设置当前web请求的编码为:" + myConf.getInitParameter("charSet"));
		// 2、将该请求转发给下一个过滤器或目标servlet
		// （如果没有将请求对象向下转发，则该请求过程会暂停在当前过滤器中）
		// chain 参数描述的是请求转发处理链对象
		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig conf) throws ServletException {
		// 初始化方法
		// 从初始化方法中的参数 conf 中可以获取web.xml配置文件中的初始化参数
		// 成员变量 在 filter的init方法中被初始化赋值，
		// init方法在doFilter方法之前进行了执行，所以在doFilter方法中直接使用myConf变量
		myConf = conf;
	}

	@Override
	public void destroy() {
		// 销毁方法，回收处理

	}
}
